package edu.lingnan.rili.service;

import edu.lingnan.rili.pojo.Uploading;
import com.baomidou.mybatisplus.extension.service.IService;
import edu.lingnan.rili.vo.UploadingVo;

import java.io.Serializable;
import java.util.List;
import edu.lingnan.rili.utils.Result;
import edu.lingnan.rili.vo.OtherBonusPointsViewPages;
import edu.lingnan.rili.vo.PersonalInformation;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 陈世杰
 * @since 2022-01-23
 */
public interface UploadingService extends IService<Uploading> {

    /**
     * @description 根据uploading_id将获奖人和获奖情况查询出来
     * @author xBaozi
     * @date 22:07 2022/3/14
     * @param id    获奖材料id
     * @return      查询结果
     **/
    // @Deprecated
    // Uploading selectById(Serializable id);

    /**
     * @description 使用vo类，根据uploading_id将获奖人和获奖情况查询出来
     * @author xBaozi
     * @date 22:07 2022/3/14
     * @param id    获奖材料id
     * @return      查询结果
     **/
    UploadingVo selectById(Serializable id, String stateId);

    /**
     * @description 获取未审核的其他比赛加分数据
     * @author xBaozi
     * @date 22:26 2022/3/24
     * @return      未审核数据的UploadingId唯一标识集合
     **/
    List<Object> getUploadingIdNotReviewed();
    /**
     * 上传文件
     *
     * @param file 图片
     * @return 返回一个json，其中包括图片在服务器的访问地址
     */
    Result uploadingPhoto(MultipartFile file, HttpSession session);

    /**
     * 其他加分项页面上传controller
     *
     * imagePath   上传到服务器的证明材料照片地址（在服务器的地址）
     * @param file
     * @param projectName 项目名称
     * @param projectType 类别
     * @param score
     * @return 返回一个json
     */
    Result otherBonusUpload
    (MultipartFile file, String projectName, String projectType, Double score, HttpSession session);

    /**
     * 其他比赛奖项页面上传controller
     *
     * @param matchName    比赛名称
     * @param prizeAwarded 比赛名次
     * @return 返回一个json
     */
    Result otherMatchUpload
    (MultipartFile file, String matchName, String projectType, Double score, String prizeAwarded, HttpSession session);

    /**
     * 这是一个查询其他加分项申请记录的controller
     *
     * @return
     */
    Result<List<OtherBonusPointsViewPages>> queryOtherExtraPointsApplyRecord(HttpSession session);

    /**
     * 这是一个查询其他比赛申请记录的controller
     *
     * @return
     */
    Result<List<OtherBonusPointsViewPages>> queryOtherGamesApplyRecord(HttpSession session);

    /**
     * 这是一个查看个人上传记录的controller
     *
     * @param session
     * @return
     */
    Result<PersonalInformation> queryingPersonalUploadingRecords(HttpSession session, String uploadingId);

}
